import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
//线程池
public class ThreadPool {
    public static void main(String[] args) {
        ThreadPoolExecutor pool=new ThreadPoolExecutor(
                2,//核心线程数
                4,//最大线程数>=核心线程数 2个临时线程
                60,//线程空闲时间 超过60秒 临时线程会被销毁
                TimeUnit.SECONDS,//时间单位 用TimeUnit指定
                new ArrayBlockingQueue<>(2),//任务队列
                // 核心线程数2个 临时线程数2个  还有2个在排队等核心线程执行 所以最多只能有4个线程同时执行，
                // 当任务队列满了，再提交任务，会用拒绝策略处理
                new ThreadPoolExecutor.CallerRunsPolicy()//拒绝策略
        );
       pool.submit(()->{
           System.out.println("线程"+Thread.currentThread().getName()+"执行了");
       });
       //提交任务
       pool.submit(new MyRunable());
       //关闭线程池
       pool.shutdown();
    }
}
